﻿using System.Collections.Generic;
using static CommonModel.Model.DataTypeDll;

namespace CommonModel.Model
{
    public class DataTypeUtils
	{
		/**
		 * 根据字符串返回对应的枚举类型<br/>
		 * 
		 * 描述符 长度（字节数） 备注<br/>
		 * char 1 数组时，可视为string<br/>
		 * bool 1 0-false,1-true<br/>
		 * UINT8 1 <br/>
		 * UINT16 2 <br/>
		 * float 4 <br/>
		 * Enum 1 枚举，也可视为UINT8<br/>
		 * 
		 * @param _type
		 * @return
		 */
		public static Dictionary<string, DataType> dataTypeDictionary = new Dictionary<string, DataType>()//类型枚举的对照字典
		{
			{"bit", DataType.BIT},
			{"bitarray", DataType.BITARRAY},
			{"byte", DataType.BYTE },
			{"char", DataType.CHAR },
			{"uchar", DataType.UCHAR },
			{"bool", DataType.BOOL },
			{"boolean", DataType.BOOL },
			{"enum", DataType.ENUM },
			{"uint8", DataType.UINT8 },
			{"uint16", DataType.UINT16 },
			{"uint16ref", DataType.UINT16REF },
			{"short", DataType.SHORT },
			{"shortref", DataType.SHORTREF },
			{"int", DataType.INT },
			{"uint", DataType.UINT },
			{"uint_ip", DataType.UINT_IP },
			{"intref", DataType.INTREF },
			{"uintref", DataType.UINTREF },
			{"float", DataType.FLOAT },
			{"uint32", DataType.UINT32 },
			{"uint32ref", DataType.UINT32REF },
			{"floatref", DataType.FLOATREF },
			{"ipv4_4", DataType.IPV4_4 },
			{"ipv4", DataType.IPV4 },
			{"long", DataType.LONG },
			{"longref", DataType.LONGREF },
			{"double", DataType.DOUBLE },
			{"doubleref", DataType.DOUBLEREF },
			{"struct", DataType.STRUCT },
			{"structloop", DataType.STRUCTLOOP },
			{"structlist", DataType.STRUCTLIST },
			{"string", DataType.STRING },
			{"hexstr", DataType.HEXSTR },
			{"hexstrref", DataType.HEXSTRREF },
			{"bitop", DataType.BITOP },
			{"byteop", DataType.BYTEOP },
			{"ushortop", DataType.USHORTOP },
			{"singleop", DataType.SINGLEOP },
			{"schedule", DataType.SCHEDULE },
			{"automsgcfg", DataType.AUTOMSGCFG },
			{"contread", DataType.CONTREAD },
			{"mac", DataType.MAC },
			{"multipathdata", DataType.MultipathData },
			{"date", DataType.DATE },
			{"dateshort", DataType.DATESHORT },
			{"unkown",DataType.UNKOWN }



		};
		public static DataType getType(string _type)
		{
			if (!dataTypeDictionary.ContainsKey(_type.ToLower()))
			{
				return dataTypeDictionary["unkown"];
			}
			return dataTypeDictionary[_type.ToLower()];//获得type对应的值
		}


	}
}
